АННОТАЦИЯ

В данном документе описывается программа, созданная в соответствии с постановкой задачи на курсовое проектирование по теме «Разработка симулятора жизни» по дисциплине «Объектно-ориентированное программирование». Программа, разработанная с использованием основных парадигм объектно-ориентированного программирования, моделирует стратегическую систему типа «Симулятор жизни». В документе приведены схемы алгоритмов, основные используемые классы, их иерархия, информационная модель, описания жизненных циклов программы и одного из объектов, диаграмма переходов состояний, подробное описание работы программы, ее характеристики и требования. Для проверки корректной работы программа была протестирована разработчиками и случайными пользователями, результат показал, что программа работает правильно. Программа написана на языке Си++ в среде C++ Builder для операционной системы Windows.

СОДЕРЖАНИЕ

Введение 4

1 Список исполнителей 5

2 Постановка задачи 6

3 Проектное решение 7

3.1 Абстрагирование и выделение объектов 7

Advertisement
Узнайте стоимость Online
  • Тип работы
  • Часть диплома
  • Дипломная работа
  • Курсовая работа
  • Контрольная работа
  • Решение задач
  • Реферат
  • Научно - исследовательская работа
  • Отчет по практике
  • Ответы на билеты
  • Тест/экзамен online
  • Монография
  • Эссе
  • Доклад
  • Компьютерный набор текста
  • Компьютерный чертеж
  • Рецензия
  • Перевод
  • Репетитор
  • Бизнес-план
  • Конспекты
  • Проверка качества
  • Единоразовая консультация
  • Аспирантский реферат
  • Магистерская работа
  • Научная статья
  • Научный труд
  • Техническая редакция текста
  • Чертеж от руки
  • Диаграммы, таблицы
  • Презентация к защите
  • Тезисный план
  • Речь к диплому
  • Доработка заказа клиента
  • Отзыв на диплом
  • Публикация статьи в ВАК
  • Публикация статьи в Scopus
  • Дипломная работа MBA
  • Повышение оригинальности
  • Копирайтинг
  • Другое
Прикрепить файл
Рассчитать стоимость

3.2 Построение иерархии классов 8

3.3 Построение информационной модели 9

3.4 Описание жизненного цикла программы 10

3.5 Описание жизненного цикла объекта «Пчела-собиратель» 11

3.6 Описание модели состояний 13

3.7 Описание диаграммы потоков системы 14

4 Программная реализация 15

4.1 Обоснование выбора языка программирования 15

4.2 Описание реализации основных классов и их методов 16

4.3 Использование объектно-ориентированных принципов 19

4.4 Интерфейс пользователя 19

4.5 Критерии качества программной системы 27

Вывод 29

Перечень ссылок 30

Приложение А : Текст программы 31

Внимание!

Это ОЗНАКОМИТЕЛЬНАЯ ВЕРСИЯ работы №3641, цена оригинала 1000 рублей. Оформлена в программе Microsoft Word.

ОплатаКонтакты.

ВВЕДЕНИЕ

Данный документ содержит программу «Симулятор улья», разработанную на основании технического задания, утвержденного «14» февраля 2013 г. Севастопольским национальным техническим университетом. Целью данного курсового проекта является изучение наиболее современного подхода к программированию на основе объектно-ориентированной технологии, а также приобретение навыков написания программ на языке с поддержкой ООП на примере разработки программы, моделирующей симулятор жизни, сфокусированный на биологическом аспекте, типа «Симулятор улья».

Для достижения вышеописанных целей в ходе курсового проектирования необходимо решить ряд задач, в числе которых абстрагирование, разработка классов и их иерархии, кодирование разработанных классов на языке С++, создание тестовых примеров, тестирование и отладка полученной программы, а также разработка программных документов в соответствии с действующими стандартами. В результате выполнения поставленных задач должны быть приобретены навыки использования объектно-ориентированного подхода при решении практических заданий, а также освоены инструменты, сопровождающие разработку программных систем с помощью этого подхода.

Описанная программа представляет собой симулятор жизни пчелиного улья, состоящий из набора различных функций для манипулирования, размещённых на общем игровом фоне, работа с которыми осуществляется с помощью мыши.

1. СПИСОК ИСПОЛНИТЕЛЕЙ

В программе разработала:

— Разработка главного метода make_hod для строителя;

— Разработка главного метода make_hod для матки;

— Разработка визуализации симулятора;

— Разработка программной возможности изменения конфигурации.

В пояснительной записке составила:

— Критерии качества программной системы;

— Описание взаимодействия программных модулей;

— Описание жизненных циклов программы и одного объекта;

— Выводы;

— Диаграмма переходов состояний.

В программе разработала:

— Разработка главного метода make_hod для собирателя;

— Разработка движка, руководящего процессом;

— Разработка визуализации меню;

— Определение коэффициентов для оптимальной работы симулятора.

В пояснительной записке составила:

— Аннотация, введение, постановка задачи;

— Интерфейс пользователя;

— Выделение объектов и построение иерархии классов;

— Информационная модель;

— Перечень ссылок.

2. ПОСТАНОВКА ЗАДАЧИ

В ходе курсового проектирования необходимо, используя объектно-ориентированный подход, разработать программу, моделирующую стратегическую систему. Необходимо организовать заданную систему в виде симулятора жизни пчелиного улья, позволяющую изменять различные параметры системы для нахождения оптимальной стратегии управления ульем. В частности, пользователь должен иметь возможность менять погоду, добавляя в систему осадки, изменять дату и время года, варьировать количество пчел-собирателей и пчел-строителей, а также вносить другие поправки в устройство жизнедеятельности пчел. В программе должны быть реализованы несколько разновидностей пчел в зависимости от рода их деятельности, каждому из которых будет поручено выполнение определенной функции. В случае переполнения улья должно быть предусмотрено формирование нового.

3. ПРОЕКТНОЕ РЕШЕНИЕ

3.1 Абстрагирование и выделение объектов

В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Данные объекта скрыты от остальной программы. Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые.

В разработанном проекте можно выделить следующие объекты:

Абстрактный класс «Объект» — это предок каждого экземпляра любого класса программы. В качестве полей он будет иметь координаты х и у и флаг видимости на экране. Также «Объект» будет обладать чисто виртуальной функцией-методом осуществления хода.

«Улей» — это класс, полями которого будут запасы меда, нектара, количество пчел, проживающих в улье, а также уровень жизни улья.

«Пчела» — это класс, в котором хранятся данные о жизненной силе пчелы и номере улья, к которому она относится.

«Матка» — это класс, содержащий информацию о виде пчелы, которая будет рождена следующей, и той, которая вынашивается прямо сейчас. Чисто виртуальная функция класса «Объект» будет переопределена на вынашивание и рождения новых пчел.

«Собиратель» — это класс, полями которого будут количество нектара, набранное пчелой, расстояние до цветов, направление полета, занятость пчелы. Функция совершения хода будет переопределена на совершение полетов к цветам для сбора нектара.

«Строитель» — это класс, в котором содержится информация о занятости строителя и оставшемся времени, необходимом для переработки следующей порции меда из нектара. Чисто виртуальная функция абстрактного класса переопределится на переработку нектара в мед.

«Окружающий мир» — это класс, хранящий информацию о текущей дате и времени, возможности полета пчел, и метод для изменения даты.

3.2 Построение иерархии классов

Иерархия классов означает классификацию объектных типов, рассматривая объекты как реализацию классов и связывая различные классы между собой.

Рисунок 1 – Иерархия классов

В программе был создан абстрактный класс объект, имеющий чисто виртуальную функцию осуществления хода. От него наследуются класс улей, описывающий особенности внутреннего содержимого улья, класс природа, характеризующий окружающий мир и класс пчелы, описывающий общие черты интерфейса для всех видов пчел, которые представлены собирателями, строителями и маткой. Собиратели осуществляют сбор нектара, строители переработку нектара в мед, а матка обеспечивает расширение семейства пчел.

3.3 Построение информационной модели

Информационная модель — модель объекта, представленная в виде информации, описывающей существенные для данного рассмотрения параметры и переменные величины объекта, связи между ними, входы и выходы объекта и позволяющая путем подачи на модель информации об изменениях входных величин моделировать возможные состояния объекта. Информационные модели нельзя потрогать или увидеть, они не имеют материального воплощения, потому что строятся только на информации.

Рисунок 2 – Информационная модель

Симулятор оснащен единственной общей картой, на которой размещаются все объекты. При этом карта может содержать большое количество ульев, каждый из которых, в свою очередь, содержит множество пчел-собирателей и пчел-строителей и всего одну матку, живущую в улье.

3.4 Описание жизненного цикла программы

Рисунок 3 – Жизненный цикл программы

S1 – Запуск

S2 – Об авторах

S3 – Начальные настройки

S4 – Работа

S5 – Режим настроек

S6 – Расширение улья

S7 – Гибель улья

S8 – Завершение работы

Первоначальное состояние S1 представляет собой запуск программы. В результате на экране отобразиться меню, с помощью которого осуществляются переходы в следующие три состояния. В частности, пользователь может перейти в состояние S2, чтобы просмотреть информацию об авторах проекта и вновь вернуться в меню; может пойти в состояние S3 и задать собственные начальные условия для запуска симулятора, а затем так же вернуться в исходное меню, или начать работу с симулятором, перейдя в состояние S4. Осуществляя наблюдение за пчелами, пользователь может периодически заходить в режим настроек переходом в состояние S5, чтобы менять различные параметры жизнедеятельности улья. Эти выбранные параметры могут привести к гибели улья (состояние S7) или же успешному его расширению (состояние S8). После чего программа может завершить свою работу и перейти в состояние S9.

3.5 Описание жизненного цикла объекта «Пчела-собиратель»

Рисунок 4 – Жизненный цикл объекта

P1 – Рождение пчелы;

P2 – Нахождение в улье;

P3 – Проверка здоровья;

P4 – Восполнение жизни;

P5 – Перемещение в другой улей;

P6 – Полет;

P7 – Потеря здоровья;

P8 – Сбор нектара;

P9 – Гибель пчелы.

Начальное состояние объекта Р1 характеризуется созданием новой пчелы. Из этого состояния есть единственный переход – в Р2, т.е. пребывание пчелы в улье. Состояние Р3 описывает осуществление проверки здоровья пчелы, в случае, если оно полное, текущим состоянием вновь станет P2, иначе необходим переход в P4 для восстановления жизни пчелы с помощью поглощения меда. В том случае, если текущий улей переполнен, возможен переход в состояние Р5 – перемещение пчелы в другой улей с последующим осуществлением состояния Р2 уже в нем. Также из P2 есть переход в Р6, то есть перемещение пчелы по карте, которое сопровождается состоянием P7, так как каждый полет отнимает у пчелы немного жизненной силы, однако это дает ей возможность перехода в состояние P8 – сбор нектара с цветов. Гибель пчелы в случае отсутствия запасов для пропитания, т.е. переход в событие Р9, также будет осуществляться из Р2.

3.6 Описание модели состояний

Рисунок 5 – Диаграмма состояний

D1 – Рождение;

D2 – Не активен;

D3 – Перемещение;

D4 – Проверка состояния;

D5 – Выполнение действия;

D6 – Уничтожение.

Состояние D2 представляет собой нахождение пчелы в улье. D3 – полет пчелы от улья к цветам или перелет ее в другой улей, т.е. это объединение состояний Р5 и Р6 из жизненного цикла объекта. Состояние D4 представляет собой проверку здоровья пчелы. D5 объединяет в себе состояния Р4, Р7 и Р8. Состояние D6 характеризует уничтожение объекта пчела, т.е. гибель ее от голода.

3.7 Описание диаграммы потоков системы

Рисунок 6 – Диаграмма потоков системы

Диаграмма потоков иллюстрирует осуществление передачи информации из одного состояния в другое. Из архива загружаются следующие данные: картинки пчел, улья, природы, запасы меда, нектара, а также скорость работы симулятора. Из состояния проверки информации поступает информация об уровне здоровья пчелы. Для перехода в состояние перелета в другой улей необходимо передать номер этот улья, для осуществления полета к цветам – текущий уровень жизни пчелы и уровень наполненности ее ведерка для нектара. Для того, чтобы пчела могла восстановить свои силы, необходимо передать информацию об уровне ее жизни и количестве имеющего в запасе меда для определения возможности этого восстановления.

4. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ

4.1 Обоснование выбора языка программирования

C++ — компилируемый статически типизированный язык программирования общего назначения. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщенного программирования. Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры).

C++ добавляет к C объектно-ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм.

Основным способом организации информации в C++ являются классы. В отличие от структуры языка C, которая может состоять только из полей и вложенных типов, класс C++ может состоять из полей, вложенных типов и функций-членов. Инкапсуляция в С++ реализуется через указание уровня доступа к членам класса: они бывают публичными, защищенными и собственными. В C++ структуры формально отличаются от классов лишь тем, что по умолчанию члены и базовые классы у структуры публичные, а у класса — собственные.

В C++ при наследовании одного класса от другого наследуется реализация класса, плюс класс-наследник может добавлять свои поля и функции или переопределять функции базового класса. Множественное наследование разрешено.

Конструктор наследника вызывает конструкторы базовых классов, а затем конструкторы нестатических членов-данных, являющихся экземплярами классов. Деструктор работает в обратном порядке.

4.2 Описание реализации основных классов и их методов

Программа построена по принципу конечного автомата, то есть каждое действие происходит по локальному событию (это может быть нажатие на клавишу, кнопку на экране, на картинку и др.), поэтому программа все время ожидает такого события, после чего меняет свое состояние на какое-либо другое.

Создание классов облегчает обработку всех этих событий.

Основные классы, их поля и методы, используемые в программе:

class obj {

public:

int vis;

int x, y;

obj() {x = 0; y = 0; vis = 0;}

int make_vis();

virtual int make_hod() = 0;

int mov(int x1, int y1);

};

Класс «Объект» является абстрактным классом, обладающим чисто виртуальной функцией совершения хода, которые впоследствии была переопределена в его потомках. В качестве полей класс имеет координаты и флаг видимости. В нем также создан конструктор без параметров, прототипы функций перемещения на заданные координаты и визуализации.

class pch_ulei : public obj {// класс улей

public:

Класс «Окружающий мир» описывает природу, является наследником класса «Объект», хранит в себе информацию о дате, времени и возможности полета пчел.

4.3 Использование объектно-ориентированных принципов

Абстракция – в ходе проектирования абстрагирование от конкретизации применялось путем создания абстрактного класса «объект». Объектом является каждый экземпляр любого класса, так как он задает картинку, нарисованную в определенном месте экрана.

Инкапсуляция – было создано несколько классов для объединения данных и функций обработки этих данных.

Наследование – при разработке программы было неоднократно применено наследование, так как многие различные объекты используют одинаковые функции и содержат одинаковые поля, такие как координаты или путь к файлу с картинкой.

Полиморфизм – в проекте была создана чисто виртуальная функция осуществления хода, которая была переопределена в каждом из классов со своими особенностями.

4.4 Интерфейс пользователя

После запуска программы, на экране появится начальная заставка с меню, отображающим несколько кнопок управления симулятор.

Меню содержит четыре альтернативы: «Начать», «Настройки», «Об авторах» и «Выход».

Рисунок 7 – Начальная заставка

Кнопка «Об авторах» выводит информацию о создателях проекта:

Рисунок 8 – Окно «Об авторах»

Для выхода достаточно нажать кнопку «Вернуться» внизу экрана.

При нажатии кнопки «Выход» программа завершает свою работу.

Кнопка «Настройки» предназначена для выставления исходных данных перед запуском симулятора. При нажатии появляется такое окно:

Рисунок 9 – Окно «Настройки»

Выход отсюда осуществляется аналогичным образом – с помощью кнопки «Вернуться» в нижней части экрана.

При нажатии кнопки «Начать» программа запустит симулятор.

Рисунок 10 – Запуск симулятора

Слева на экране будет отображаться улей, пчелы и цветы; справа будет выводиться информация о текущем состоянии улья. В частности, здесь находится дата, количество нектара, меда, пчел-строителей и пчел-собирателей. При выборе пункта «Показать настройки» в нижней части правой панели будут отображены опции управления ульем.

Рисунок 11 – Отображение настроек пользователя

Как видно из рисунка, на панели настроек пользователя имеется поле для ввода процентной доли меда, забираемой человеком, которая будет осуществляться раз в месяц, поле для ввода текущей температуры воздуха, которая будет влиять на осуществление сбора нектара пчелами, пункт для добавления осадков, которые так же влияют производительность пчел, к тому же на панели присутствуют две кнопки, обеспечивающие возможность добавления пчел-собирателей и пчел-строителей, и последним инструментом управления на панели настроек пользователя является бегунок изменения скорости течения времени.

При запуске симулятор начинает осуществлять работу с третьего календарного месяца – марта.

Рисунок 12 – Изображение природы в весенние месяцы

Рисунок 13 – Изображение природы в летние месяцы

Рисунок 14 – Изображение природы в осенние месяцы

Рисунок 15 – Изображение природы в зимние месяцы

При наступлении зимы температура падает. При нуле градусов пчелам становится холодно, они перестают работать и залетают в улей. Аналогичная ситуация произойдет, если пользователь задаст низкую температуру. Если же пользователь вводит температуру выше шестидесяти, пчелы так же летят в улей. Находясь в улье, пчелы не добывают нектар и не перерабатывают его в мед, в каждую единицу времени они только его потребляют.

Если на панели настроек выбран пункт «Осадки», это приведет не только к тому, что пчелы спрячутся в улей, но и повреждению самого улья. Его восстановлением занимаются пчелы-строители. В том случае, если количество меда превысит пятнадцать тысяч единиц и количество пчел-собирателей будет больше семидесяти, пчелы-строители должны также создавать новый улей для дальнейшего расширения семейства и увеличения запасов меда. На это строительство будет выделяться десять тысяч единиц меда и тридцать пчел-собирателей, которые переедут жить в новый улей. Для отображения какого-либо улья пользователь может выбрать его в выпадающем меню на панели управления.

Рисунок 16 – Меню для выбора улья

Если пользователь перед запуском симулятора не задает собственные настройки, программа сама задает начальные условия, а именно: количество пчел-собирателей – двадцать, пчел-строителей – три, температура воздуха – двадцать градусов, процентная доля меда, забираемая человеком – восемьдесят, количество меда – пять тысяч единиц, количество нектара – пять тысяч единиц, отношение нектара к меду при переработке – тридцать к двадцати восьми, количество нектара, которое может принести собиратель – двести пятьдесят единиц, максимальные жизненные силы пчелы – пятьдесят единиц, время для создания новой пчелы – триста.

В процессе полета жизненные силы пчелы-собирателя уменьшаются, когда она доставит нектар в улей, у нее будет возможность восстановить уровень своего здоровья, поедая мед, если в улье есть запас. Если пчела не восстанавливает свой жизненный запас, она не способна осуществить свой полет снова. Значит, в каждый последующий момент времени ее продолжит уменьшаться до тех пор, пока не появится возможность поесть меда, иначе при достижении уровня здоровья нуля – пчела умирает.

За заданное в начальных настройках время матка будет производить новых пчел, пополняя семейство. При нажатии на улей на экране отобразится изображение улья изнутри.

Рисунок 17 – Матка в улье

При вынашивании новой пчелы матка теряет свои жизненные силы, после рождения она будет съедать столько меда, сколько ей будет необходимо для полного восстановления. В связи с этим, если запасы меда будут уменьшаться, а не увеличиваться, и его не будет хватать на пропитание всех пчел, в первую очередь будет насыщаться матка. Если запаса меда настолько мало, что пчелы начнут гибнуть, матка умрет в последнюю очередь.

К гибели всех пчел и разрушению улья приводит неудачно выбранная стратегия управления жизнедеятельностью пчел.

4.5 Критерии качества программной системы

Характеристики качества программного обеспечения – набор свойств программной продукции, по которым ее качество описывается и оценивается. Характеристики качества программного обеспечения могут быть уточнены на множестве уровней комплексных показателей.

В построенной системе можно выделить такие критерии качества:

— Понятность — показатель, обратный к усилиям, которые затрачиваются пользователями на восприятие основных понятий ПО и осознание их применимости для решения своих задач. Разработанный интерфейс интуитивно понятен, у среднестатистического пользователя не должно возникнуть проблем с пониманием управления симулятором;

— Удобство обучения — показатель, обратный усилиям, затрачиваемым пользователями на обучение работе с ПО;

— Удобство работы — показатель, обратный усилиям, предпринимаемым пользователями для решения своих задач с помощью ПО;

— Привлекательность, то есть способность быть привлекательным для пользователей, работа симулятора была визуализирована с помощью различных изображений пчел, улья и пр., что способно приносить пользователю удовольствие от работы с подобной системой, так как это не только помогает наглядно отобразить какие-либо действия, осуществляемые пчелами, но и оживляет их работу;

— Адаптируемость, что значит способность ПО приспосабливаться различным окружениям без проведения для этого действий, помимо заранее предусмотренных. Созданная система не обладает высокими требованиями к аппаратному обеспечению или же операционной системе, поэтому не может возникнуть проблемы приспособления ее к какому-либо устройству;

— Незащищенность — неспособность предотвращать неавторизированный и неразрешенный доступ к данным и программе. Созданная система не обладает никакими мерами защиты от несанкционированного доступа к данным;

— Неспособность к взаимодействию с другими системами; данный симулятор не рассчитан на совместную работу с какими-либо подобными системами, для взаимодействия необходима модификация существующего проекта.

ВЫВОД

В ходе выполнения курсового проекта была реализована система типа «Симулятор улья» в соответствии с постановкой задачи на курсовое проектирование по дисциплине «Объектно-ориентированное программирование». Были повторены, более детально рассмотрены и закреплены знания об объектно-ориентированном подходе в программировании, рассмотрены основные преимущества ООП над структурным подходом. Программа была протестирована, обнаруженные в ходе тестирования недочеты устранены. Были построены иерархия классов, информационная модель, диаграмма потоков, состояний, жизненные циклы программы и объекта «Пчела-собиратель».

Таким образом, поставленная цель была достигнута. Разработанная программа оригинальна, полезна и будет интересна человеку любого возраста с минимальными навыками владения компьютером благодаря простому дружественному интерфейсу.

ПЕРЕЧЕНЬ ССЫЛОК

1. Методические указания к курсовому проектированию по дисциплине «Объектно-ориентированное программирование»/ Сост. Ю.В. Доронина, Т.И. Сметанина, А.К. Забаштанский. – Севастополь; Из-во СевНТУ, 2011. ч. 1. – 24 с.

2. ДСТУ 3008-95. Документация. Отчеты в сфере науки и техники. Структуры и правила оформления. – Госстандарт Украины, Введ. 23.02.1995. – 22 с.

3. Объектно-ориентированное программирование [Электронный ресурс]. – Электрон. текстовые данные(44246 bytes). – М.: 2013 – Режим доступа: http://ru.wikipedia.org/wiki/%CE%E1%FA%E5%EA%F2%ED%EE-%EE%F0%E8%E5%ED%F2%E8%F0%EE%E2%E0%ED%ED%EE%E5_%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5 Friday, 17 May 2013 20:12:47.

4. Объектно-ориентированное программирование на С++ [Электронный ресурс]. – Электрон. текстовые данные(446651 bytes). – СПб.: 2002 – Режим доступа: http://5fan.ru/wievjob.php?id=2193 Friday, 17 May 2013 19:28:34.

5. Страуструп Б. Язык программирования С++./ Б. Страуструп. — М.: Издательство Бином, 2011. — 1136 с.

Приложение А

Текст программы

/*

Программа моделирует стратегическую систему типа «Симулятор».

Утверждено 14.02.2013

Среда программирования C++ Builder version 6.0

Дата последней коррекции: 10.05.2013

Версия 1.0

*/

//—————————————————————————

#include <vcl.h>

#include <fstream.h>

#include <string>

#include <cstring>

#include <map>

#pragma hdrstop

#include «Unit1.h»

//—————————————————————————

#pragma package(smart_init)

#pragma resource «*.dfm»

TForm1 *Form1;

//—————————————————————————

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//—————————————————————————

TImage *mas_pchel_ulei[100];

int flag_ulei=0;

int index_ulei;

TImage *mas_pchel_ulei2[100];

int flag_ulei2=0;

TImage *mas_pchel_ulei3[100];

int flag_ulei3=0;

bool raz = false;

int max_hp = 50; // максимальная жизнь пчелы

int ul_hp = 100; // максимальная жизнь улья

int kurs_med = 28;

int kurs_nek = 30;

int max_nek = 250;

int new_reb = 300;

class obj {

public:

int vis;

int x, y;

obj() {x = 0; y = 0; vis = 0;}

int make_vis();

virtual int make_hod() = 0;

int mov(int x1, int y1);

};

class pch_ulei : public obj {// класс улей

public:

int zp_med; // запас меда

int zp_nek; // запас нектара

int kol_pch; // кол-во пчел

int hp;// жизнь улья

int make_hod(){ return 0;}

};

class pchela : public obj { // класс пчела

public:

int hp; // силы

int num_ul; // номер улья

pchela(int num = 0); // конструктор

};

pchela :: pchela(int num) {// описание конструктора

hp = max_hp;

num_ul = num;

}

class pch_matka : public pchela { // матка — наследник простой пчелы

public:

int det; // какого ребенка будет расти

int zan; // то, чем сейчас занимается

int tim; // на каком этапе находимся

int make_hod();// метод, который выполняет ход

};

class pch_sobir : public pchela {// собиратель

public:

int zan; // чем занята

int zapas; // кол-во нектара, которое в цветке

int napr; // в какую сторону летит

int ras; // расстояние до ближайшего цветка

int tim;

int nektar; // сколько он уже в ведро положил

int make_hod();// сделать ход

};

class pch_stroit : public pchela {

public:

int zan; // чем занята

int tim; // сколько осталось времени до выполнения текущего задания

int make_hod();

};

class pch_trut : public pchela { // трутень

public:

int tim;

int make_hod(){return 0;}

};

class okr_mir : public obj {

public:

int month, day, chas; // дата

int polet; // разрешен ли полет

okr_mir(int x) {month = 3; day = 1; chas = 12; polet = 0;};

int make_hod(){return 0;}

inc_data();

};